iT邦幫忙

2026 iThome 鐵人賽

DAY 3
0
Security

資安入門地圖:30 天建立資訊安全全貌知識體系系列 第 8

Day 8:DNS 安全——網路世界的電話簿是怎麼被動手腳的

  • 分享至 

  • xImage
  •  

DNS(Domain Name System)做的事情很單純:把人類記得住的網域名稱(例如 example.com)翻譯成電腦真正需要的 IP 位址。這件事平常完全感覺不到它的存在,你在瀏覽器輸入網址,一眨眼頁面就出現了,中間那一次翻譯查詢通常只花幾十毫秒。正因為它太理所當然,DNS 也成了一個容易被忽略、卻影響巨大的攻擊面——如果有人能竄改這個翻譯的結果,不需要打穿任何一端的系統,就能把你導去完全錯誤的地方。

DNS 查詢的簡化過程

你的裝置要找出 example.com 對應的 IP,通常不會直接問管理這個網域的權威伺服器,而是先問離自己比較近的解析伺服器(常見情境是電信商提供的,或是你自己設定的公開 DNS 服務)。這個解析伺服器如果剛好最近查過、還記得答案(這叫做快取,Cache),就直接回覆;如果沒有,才會往上一層層問下去,最後把答案帶回來,同時把這個答案存起來,讓下一個查同一個網域的人可以更快拿到結果。

這個「先問附近的人,附近的人記不住才往上問」的設計,是為了效率——如果每次查詢都要從頭問到權威伺服器,整個網路會慢到不能用。但這個設計也埋下了資安問題的種子:如果解析伺服器記下的答案是假的,在快取過期之前,所有問它的人都會拿到同一個錯誤答案。

快取投毒:把錯的答案偷偷塞進電話簿

快取投毒(DNS Cache Poisoning,也叫 DNS Spoofing)指的正是攻擊者想辦法讓解析伺服器的快取裡,存進一筆偽造的對應紀錄。舉例來說,如果攻擊者成功讓某個解析伺服器相信 example.com 對應的是他控制的惡意伺服器 IP,那麼在這筆錯誤紀錄的存活期間內,所有透過這台解析伺服器查詢 example.com 的使用者,都會被導向攻擊者的伺服器,而使用者的瀏覽器網址列上顯示的,依然是看起來完全正常的 example.com。

這種攻擊之所以可怕,是因為它發生在使用者完全無法察覺的層級——你沒有點錯連結,也沒有被騙輸入奇怪的網址,你打的就是正確的網址,只是這個網址背後指向的地方被動了手腳。傳統上要成功發動這種攻擊,攻擊者需要在解析伺服器發出查詢、等待權威伺服器回覆的極短時間窗口內,搶先送出一個偽造的回覆,而且要正確猜中查詢使用的識別碼,難度不低,但並非做不到,歷史上也確實出現過大規模的實際攻擊案例。

域名劫持:直接搶走網域本身的控制權

跟快取投毒不同,域名劫持(Domain Hijacking)不是竄改查詢過程中的答案,而是直接拿到網域本身的管理權限。網域的擁有者需要透過註冊商(Registrar)來管理這個網域指向哪裡,如果攻擊者透過釣魚、社交工程,或是利用註冊商系統的弱點,拿到了管理帳號的存取權,就能直接把整個網域改成指向自己想要的地方——這已經不是欺騙某台解析伺服器,而是從源頭上動了手腳,影響範圍是全世界所有查詢這個網域的人,而且通常要等到擁有者發現異常、重新取回控制權才能恢復。

域名劫持凸顯了一個容易被忽略的資安環節:一間公司的資安防線再堅固,如果管理網域的帳號本身保護不夠(例如沒有開多因子驗證、密碼被重複使用在其他外洩過的服務上),整個防線可以從一個看似跟核心系統無關的第三方服務被繞過去。這也呼應了前面談過的觀念——攻擊者不一定會挑最難打的那扇門,而是挑最容易打開的那扇。

對抗這些問題的機制:DNSSEC

DNS 原始設計並沒有內建驗證回覆真偽的機制,這也是快取投毒之所以可能成立的根本原因——解析伺服器收到一個回覆,沒有辦法從協定層面確認「這真的是權威伺服器回的,沒有被半路調包」。DNSSEC(DNS Security Extensions)就是為了補上這塊拼圖而設計的機制,透過數位簽章(Day 12 會展開講的技術),讓解析端可以驗證收到的 DNS 回覆確實來自合法的權威伺服器、且內容沒有被竄改。

DNSSEC 部署到今天仍然不算普及,原因包括設定複雜、需要整個查詢鏈路上的每一層都配合支援,單一環節沒跟上,保護就會出現缺口。這也是資安領域一個常見的現實:一個技術上可行、也確實有效的解決方案,不代表它會被迅速且全面地採用,推廣速度往往受限於既有系統的慣性跟維運成本。

這對日常防禦意味著什麼

對一般使用者跟企業來說,實務上能做的包括:選擇有信譽、支援 DNSSEC 的 DNS 服務商;替管理網域註冊的帳號加上多因子驗證,並且視同核心資產一樣看待,而不是當成一個「順手設定完就忘記」的行政工作;留意瀏覽器對憑證的警告(這點跟昨天談的中間人攻擊呼應——即使 DNS 被劫持導向了假網站,如果對方沒有你網域的合法憑證,瀏覽器多半還是會跳出警告)。

DNS 這一層之所以值得花一整篇篇幅講,是因為它處在整個網路信任鏈條的最上游——你對一個網站的所有信任,某種程度上都建立在「DNS 給我的答案是對的」這個假設上。這個假設一旦被打破,後面不管做了多少層防護,起點就已經錯了。


上一篇
Day 7:中間人攻擊——當有人悄悄站在你跟對方之間
系列文
資安入門地圖:30 天建立資訊安全全貌知識體系8
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言